package interfaceGraphique;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * Permet de creer la fenetre qui donne le choix entre l'ordonnancement ou le test d'ordonnancement
 * @author nicolas rault et matthieu allon
 *
 */
public class FenChoixOrdoSimul extends JDialog implements ActionListener
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JLabel choixTestSimul;
	private JButton testabilite;
	private JButton simulation;
	private static FenChoixOrdoSimul singletonFenChoix;
	private boolean testSimul;

	/**
	 * Constructeur de la fenetre
	 */
	private FenChoixOrdoSimul()
	{
		this.setTitle("Test ou Simulation?");
		this.setSize(500,80);
		this.setLocationRelativeTo(this.getParent());
		this.setModal(true);
		
		testSimul = false;
		
		JPanel pan = new JPanel();
		BorderLayout border = new BorderLayout();
		pan.setLayout(border);
		this.add(pan);
		
		//Creation des differents boutons et labels
		choixTestSimul = new JLabel("Que souhaitez-vous faire ? ");
		pan.add(choixTestSimul,BorderLayout.NORTH);
		
		JPanel test = new JPanel();
		GridLayout border2 = new GridLayout(1,2);
		test.setLayout(border2);
		pan.add(test,BorderLayout.CENTER);
		this.add(pan);
				
		testabilite = new JButton("Test d'odonnancabilite");
		test.add(testabilite,BorderLayout.SOUTH);
		testabilite.addActionListener(this);
		
		simulation = new JButton("Ordonnancement du systeme");
		test.add(simulation,BorderLayout.SOUTH);
		simulation.addActionListener(this);
	
	}
	
	/**
	 * Permet d'autoriser une seule creation de la fenetre FenChoixOrdoSimul.
	 * @return la fenetre FenChoixOrdoSimul
	 */
	public static FenChoixOrdoSimul getInstance() 
	{
		if (singletonFenChoix == null) 
		{
			singletonFenChoix = new FenChoixOrdoSimul();
		}
		return singletonFenChoix;
	}
	
	/**
	 * 
	 * @return faux si on souhaite juste faire un test d'ordonnancement, vrai sinon.
	 */
	public boolean getTestSimul()
	{
		return testSimul;
	}

	/**
	 * Permet d'assigner une action aux differents evenements survenus sur la fenetre.
	 * @param e evenement recupere par la fenetre
	 */
	public void actionPerformed(ActionEvent e) 
	{
		String bouton = e.getActionCommand();
		if(bouton.equals("Test d'odonnancabilite"))
		{
			testSimul = false;
			this.setVisible(false);
			Accueil accueil = Accueil.getInstance();
			accueil.genTache();
		}
		else 
		{
			testSimul = true;
			this.setVisible(false);
			FenFichierTexte fen = FenFichierTexte.getInstance();
			fen.setLocation(30, 100);
			fen.setVisible(true);
		}
		
	}
}